package config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.context.annotation.*;

import javax.sql.DataSource;

/**
 * @author 3052
 * @create 2020-07-28 19:13
 *
 *
 *  该类是一个配置类，他的作用和bean.xml是一样的
 *  spring中的新注解
 *  @Configuration
 *      作用：指定当前类是一个配置类
 *      细节：
 *          当配置的类在扫描包中，才会生效；
 *          当配置类作为 AnnotationConfigApplicationContext 参数创建的参数时，该注解可以不写
 *  @ComponentScan
 *      作用：用于通过注解指定spring在创建容器中要扫描的包
 *      属性：
 *          value：它和basePackages的作用是一样的，都是用于指定创建容器时要扫描的包
 *              我们使用此注解就等同于在xml中配置了：
 *                  <context:component-scan base-package="com.xzm"></context:component-scan>
 *  @Bean
 *      作用：用于将当前方法返回的对象存入到spring的ioc容器中
 *      属性：
 *           name：用于指定bean的id，当不写的时候，默认值是当前方法的名称
 *      细节：
 *           当我们使用注解配置方法时，如果方法有参数，spring框架会在容器中查找有没有可用的bean对象
 *           查找的方式和autowired注解的作用是一样的
 *  @Import
 *      作用：用于导入其他的配置类
 *      细节：不用在扫描包中指明和@configuration，也不用在AnnotationConfigApplicationContext中加入字节码.class
 *      属性：
 *          value：用于指定其他配置类的字节码文件.class
 *          有@Import修饰的类就是主（父）配置类，而导入的都是子配置类
 *
 *  @PropertySource
 *     作用：用于指定properties文件的位置
 *     属性：
 *          value：指定文件的名称和文件的路径
 *              关键字 classpath： 表示类路径下
 *
 */

@ComponentScan(value = {"com.xzm"})
@Import(JdbcConfig.class)
@PropertySource("jdbcConfig.properties")
public class SpringConfiguration {

}
